12
תגובות

הגדרת מסד נתונים לעברית

פתח yotamN ,
איך אני יכול להגדיר למוסד נתונים שיאפשר לי לרשום בעברית? אם אני רושם לדוגמה "פורום" הוא יציג לי "?????", אמרו לי לשים קידוד utf-8 אבל לא הבנתי איך :(

12 תשובות

avatar ענה intval ב 04 לינואר 2014 #

http://phpguide.co.il/UTF_8_%D7%A7%D7%99%D7%93%D7%95%D7%93_%D7%95%D7%A1%D7%99%D7%9E%D7%A0%D7%99_%D7%A9%D7%90%D7%9C%D7%94.htm

avatar ענה yotamN ב 04 לינואר 2014 #

@intval עשיתי כבר הכל חוץ מהאחרון ויש לי בעיה בווינדוס 8 ואני לא יכול להיכנס ל PhpMyAdmin אז איך אני יכול להגדיר את זה דרך פקודה?

avatar ענה Splash ב 04 לינואר 2014 #

על מנת לשנות את הקידוד של הDB עצמו -
ALTER DATABASE *databasename* CHARACTER SET utf8 COLLATE utf8_general_ci;

על מנת לשנות את הקידוד של הטבלה -
ALTER TABLE *tablename* CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;

avatar ענה yotamN ב 04 לינואר 2014 #

@splash לא עובד, עשיתי כל דבר אפשרי, ניסיתי ליצור את הטבלה מראש עם הקידוד, ניסיתי את מה שהבאת וניסיתי עוד מיליון דברים אחרים אבל שום דבר לא עובד, זה הקובץ התקנה של המוסד:

<?php
    include("config.php");

mysql_query("
    CREATE TABLE users(
        username varchar(255) PRIMARY KEY,
        password varchar(255) NOT NULL,
        email varchar(255) NOT NULL,
        level int(10) DEFAULT 1,
        posts int(10) DEFAULT 0,
        UNIQUE (email)
    )"

);

mysql_query("
    CREATE TABLE games(
        id int PRIMARY KEY AUTO_INCREMENT,
        Name varchar(255) NOT NULL,
        info text NOT NULL,
        year varchar(255) NOT NULL,
        category varchar(255) NOT NULL,
        Metascore int,
        votes int(20) DEFAULT 0
    )"

);

mysql_query("INSERT INTO users (username, password, email, level) VALUES ('admin', '123456', '[email protected]', 3)");
mysql_query("ALTER TABLE users CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci");
mysql_query("ALTER TABLE games CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci");
mysql_query("ALTER DATABASE games CHARACTER SET utf8 COLLATE utf8_general_ci;");

echo 'Database created<br />Delete this page';

avatar ענה nirbe ב 04 לינואר 2014 #

תנסה להוסיף את זה מיד אחרי ההתחברות למסד (אני לא בטוח שזה יעבוד, אבל שווה לנסות).

mysql_query("SET NAMES utf8");

avatar ענה Splash ב 05 לינואר 2014 #

תשתמש ב or die אחרי כל פונקצית mysql_query על מנת לראות מה השגיאה שנפלטת,בנוסף אני ממליץ לך לקרוא על מדוע לא להשתמש בספריית mysql ולעבור כבר ל mysqli.

avatar ענה yotamN ב 05 לינואר 2014 #

@splash מישהו המליץ לי על PDO אבל אני עוד לא יודע את זה, ועל מה לעשות or die? על אלו?

mysql_query("ALTER TABLE users CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci");
mysql_query("ALTER TABLE games CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci");
mysql_query("ALTER DATABASE games CHARACTER SET utf8 COLLATE utf8_general_ci;");

avatar ענה OrelBeY ב 06 לינואר 2014 #

לשנות קידוד של בסיס נתונים קיים (שיש בו נתונים) זה תהליך יותר מסובך לפי מה שאני זוכר. אין לי ממש זמן לזה עכשיו, אז אני ממליץ לך לחפש בגוגל (באנגלית). מה שכן, תנסה את זה:

קודם תעשה את זה (ואל תחזור על זה שוב אף פעם):

ALTER DATABASE games CHARACTER SET utf8 COLLATE utf8_general_ci;

אם זה קובץ ההתקנה של בסיס הנתונים עצמו, כדאי יהיה להכניס את זה ל-CREATE DATABASE. (אם הוא למטרת בדיקות תמחק את בסיס הנתונים ותתחיל מההתחלה, אלא אם כן יש שם נתונים שאתה צריך, כמובן.)

וכל טבלה שתיצור - לא תצטרך לשנות את הקידוד שלה, כי ברירת המחדל כבר נקבע ל-UTF8. בכל מקרה, אם כבר מההתחלה אתה יודע שאתה צריך קידוד מסוים, אין טעם להשתמש ב-ALTER TABLE/DATABASE; פשוט תכניס את זה ל-CREATE.

@Splash מי אמר שיש שגיאה כזאת? מקסימום תהיה אזהרה, וגם זה לא בטוח. :-)

@yotamN כמעט שכחתי. לפני יותר מחצי שנה תרגמתי מדריך בסיסי לעבודה עם MySQLi בתכנות פרוצדרורלי (כלומר אתה לא צריך לדעת תכנות מונחה עצמים בשביל זה).

avatar ענה Splash ב 06 לינואר 2014 #

אתה עושה משהו לא בסדר... אם הרצת את כל הפקודות האלה כמו שצריך אז הקידוד של המסד צריך להיות על utf8 ,לאחר מכן צריך לוודא שגם החיבור למסד הוא utf 8 ורק אז אפשר להכניס נתונים בעברית.אם תכניס נתונים לפני שהמסד הוגדר utf 8 הוא לא בטוח יצליח לקרוא אותם.

תעשה export ל db ותעלה את הקובץ sql שיצא לך על מנת שיהיה אפשר לראות את הקידוד,בנוסף תביא פה את הקוד של השליפה של הנתונים על מנת לוודא שאתה באמת עובד עם utf 8

נ.ב
תעבור לעבוד עם mysqli ,זה כבר מתחיל לשגע שאנשים שלומדים php כמה שנים אחרי שיצאה ההרחבה והם עדיין משתמשים בטכנולוגיה הישנה כאשר החדשה גם מהירה יותר,גם נוחה יותר וגם מאובטחת יותר

avatar ענה yotamN ב 06 לינואר 2014 #

@OrelBeY אני ינסה את זה עוד מעט

@splash זאת הבעיה, ה PhpMyAdmin לא עובד לי על Win 8 משום מה, לא מצאתי שום פיתרון בינתיים, אני לא יכול לעשות Export

avatar ענה Splash ב 06 לינואר 2014 #

אין שום קשר בין ה phpmyadmin אל ה windows 8,זה תוכנית ב php ,זה כמו שתגיד ש wordpress לא עובד על ווינדוס XP.
אין דבר כזה אם המנוע של php עובד וה mysql עובד אז גם phpmyadmin צריך לעבוד.
הבעיה היחידה שיכולה להיות זה בהגדרות,אולי הסיסמא\שם משתמש של המסד נתונים לא תואם למה שיש בהגדרות של phpmyadmin.

תרשום פה את השגיאה

avatar ענה yotamN ב 06 לינואר 2014 #

@splash השגיאה היא שה Wamp server כל הזמן Oflline בצבע כתום וחיפשתי פתרונות ולא מצאתי